<?php

  !defined('IN_CMS') && exit('Access Denied');

  define("USER_SESSION_SAVE_HANDLER", true); //是否启用SESSION保存到数据库
  

/**
 * @brief 设置session配置 
 */

/**
 * CREATE TABLE `tbl_session` (
 *     `session_id` varchar(255) binary NOT NULL default '',
 *     `session_expires` int(10) unsigned NOT NULL default '0',
 *     `session_data` text,
 *     PRIMARY KEY  (`session_id`)
 *    ) ENGINE=MyISAM;
 */

class Session 
{
    //mysql的主机地址
    //const db_host = "localhost"; //需要第三方指定ip地址 

    //数据库用户名
    //const db_user = "root";   //需要第三方指定自己的用户名

    //数据库密码
   // const db_pwd = "123456"; //需要第三方指定自己的库据库密码

    //数据库
  //  const db_name = "kuaihui";      //需要第三方指定数据库

    //数据库表
    const db_table = "pl_session"; //需要第三方指定数据表

    //mysql-handle
    private $db_handle;

    //session-lifetime
    private $lifeTime;	
	

    function open($savePath, $sessName) 
    {
        // get session-lifetime
        $this->lifeTime = get_cfg_var("session.gc_maxlifetime");

        // open database-connection
        //$db_handle = @mysql_connect(self::db_host, self::db_user, self::db_pwd);
		//$dbSel = @mysql_select_db(self::db_name, $db_handle);
		
		global $conn;		
		$db_handle = $conn;
		

        // return success
        if(!$db_handle)
            return false;

        $this->db_handle = $db_handle;
        return true;
    }

    function close() 
    {
        $this->gc(ini_get('session.gc_maxlifetime'));
        // close database-connection
        return @mysql_close($this->db_handle);
    }

    function read($sessID) 
    {
        // fetch session-data
        $res = mysql_query("SELECT session_data AS d FROM ".self::db_table." 
            WHERE session_id = '$sessID'
            AND session_expires > ".time(), $this->db_handle);

        // return data or an empty string at failure
        if($row = mysql_fetch_assoc($res))
            return $row['d'];

        return "";
    }

    function write($sessID, $sessData) 
    {
        // new session-expire-time
        $newExp = time() + $this->lifeTime;

        // is a session with this id in the database?
        $res = mysql_query("SELECT * FROM ".self::db_table." 
            WHERE session_id = '$sessID'", $this->db_handle);

        // if yes,
        if(mysql_num_rows($res)) 
        {
            // ...update session-data
            mysql_query("UPDATE ".self::db_table." 
                SET session_expires = '$newExp',
                session_data = '$sessData'
                WHERE session_id = '$sessID'", $this->db_handle);

            // if something happened, return true
            if(mysql_affected_rows($this->db_handle))
                return true;
        }
        else // if no session-data was found,
        {
            // create a new row
            mysql_query("INSERT INTO ".self::db_table." (
                session_id,
                session_expires,
                session_data)
                VALUES(
                    '$sessID',
                    '$newExp',
                    '$sessData')", $this->db_handle);
            // if row was created, return true
            if(mysql_affected_rows($this->db_handle))
                return true;
        }

        // an unknown error occured
        return false;
    }

    function destroy($sessID) 
    {
        // delete session-data
        mysql_query("DELETE FROM ".self::db_table." WHERE session_id = '$sessID'", $this->db_handle);

        // if session was deleted, return true,
        if(mysql_affected_rows($this->db_handle))
            return true;

        // ...else return false
        return false;
    }

    function gc($sessMaxLifeTime) 
    {
        // delete old sessions
        mysql_query("DELETE FROM ".self::db_table." WHERE session_expires < ".time(), $this->db_handle);

        // return affected rows
        return mysql_affected_rows($this->db_handle);
    }
}

/**
 * 指定session有效的域名
 * ini_set("session.cookie_domain", ".domain.com");
 * .domain.com是站点的主域名,请注意前面个有一个'.'
 */
//define("MAIN_DOMAIN", ".5300.cn");   //设置主域名

/**
 * 不同子域名下共享session信息
 * COOKIE_DOMAIN = false 禁止该功能
 * COOKIE_DOMAIN = true  启用该功能
 * 默认禁止
 * 开启前提需要定义MAIN_DOMAIN常量
 */
define("COOKIE_DOMAIN", true); 
if (defined("COOKIE_DOMAIN") && COOKIE_DOMAIN)
{
    if (defined("MAIN_DOMAIN"))
        ini_set("session.cookie_domain", MAIN_DOMAIN);
}

/**
 * 同一个主域名，不同服务器之间共享session信息
 * USER_SESSION = false 禁用该功能
 * USER_SESSION = true  启用该功能
 * 默认禁止
 * 开启前提需要建立mysql数据表
 */

if (USER_SESSION_SAVE_HANDLER){
    ini_set("session.save_handler", "user");
    $session = new Session;
    session_module_name("user");
    session_set_save_handler(
        array(&$session, "open"),
        array(&$session, "close"),
        array(&$session, "read"),
        array(&$session, "write"),
        array(&$session, "destroy"),
        array(&$session, "gc"));
}

//@session_id("demo");
$time=2*60*60;
session_set_cookie_params($time);
@session_start();